package com.soilflow.common.core.domain.entity.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.soilflow.common.core.domain.BaseEntity;
import com.soilflow.common.utils.easyexcel.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 党员信息导出
 * @author csh
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysUserExportVo extends BaseEntity {

    ///**
    // * 用户头像
    // */
    //@ExcelProperty(converter = StringImageConverter.class)
    //private String avatar;
    /**
     * --------------------------------------党员---------------------------------------------------------------------
     */

    //党员编号
    @ExcelProperty(value = "党员编号")
    private String memberId;

    /**
     * 用户性别
     */
    @ExcelProperty(value = "用户性别", converter = SexConverter.class)
    private String sex;

    //姓名
    @ExcelProperty(value = "姓名")
    private String name;

    /**
     * 用户邮箱
     */
    @ExcelProperty("用户邮箱")
    private String email;

    /**
     * 手机号码
     */
    @ExcelProperty("手机号码")
    private String phonenumber;

    //身份证
    @ExcelProperty(value = "身份证")
    private String idNumber;

    //民族
    @ExcelProperty(value = "民族")
    private String nation;

    //婚姻状况（0已婚，1未婚，2离异，3丧偶）
    @ExcelProperty(value = "婚姻状况",converter = MaritalStatusConverter.class)
    private Short maritalStatus;

    //籍贯
    @ExcelProperty(value = "籍贯")
    private String nativePlace;

    //入党日期
    @ExcelProperty(value = "入党日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date joinDate;

    //死亡日期
    @ExcelProperty(value = "死亡日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date deathTime;

    //出生年月
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "出生年月")
    private Date birthday;

    //转正日期
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "入党日期")
    private Date confirmationDate;

    //党内职务(0无，1书记，2副书记，3党组成员，4委员，5顾问委员会委员，6纪律检查委员会委员，7纪律检查委员会常委，8纪律委员会书记，9纪律委员会副书记，10主任，11副主任，12副科长，13科长)
    @ExcelProperty(value = "党内职务",converter = PartyDutyConverter.class)
    private Short soilflowDuty;

    //居住地
    @ExcelProperty(value = "居住地")
    private String residence;

    //工作单位
    @ExcelProperty(value = "工作单位")
    private String workUnit;

    //职位(0决策层，1管理层，2员工)
    @ExcelProperty(value = "职位",converter = JobTitleConverter.class)
    private Short jobTitle;

    //工作地址
    @ExcelProperty(value = "工作地址")
    private String workPlace;

    //学历(0小学，1初中，2中专，3技校，4高中，5大学专科，6大学本科，7研究生)
    @ExcelProperty(value = "学历",converter = EducationBackgroundConverter.class)
    private Short educationBackground;

    //学位(0学士，1硕士，2博士，3名誉博士)
    @ExcelProperty(value = "学位",converter = EducationDegreeConverter.class)
    private Short educationDegree;

    //电话
    @ExcelProperty(value = "电话")
    private String telephone;

    //其它方式
    @ExcelProperty(value = "其它方式")
    private String otherWays;

    //党籍状态(0正常,1停止党籍)
    @ExcelProperty(value = "党籍状态",converter = PartyMembershipStatusConverter.class)
    private Short soilflowMembershipStatus;

    //是否为失联党员(0否，1是)
    @ExcelProperty(value = "是否为失联党员",converter = IsDeathConverter.class)
    private Short isMissingMember;

    //失去联系日期
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "失去联系日期")
    private Date missingDate;

    //党员是否死亡(0否，1是)
    @ExcelProperty(value = "党员是否死亡",converter = IsDeathConverter.class)
    private Short isDeath;

    //死亡日期
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "死亡日期")
    private Date death_time;

    //是否为困难党员(0否，1是)
    @ExcelProperty(value = "是否为困难党员")
    private Short isDifficult;

    //是否为流动党员(0否，1是)
    @ExcelProperty(value = "是否为流动党员")
    private Short isMemberFlow;

    //流动类型(0流入,1流出)
    @ExcelProperty(value = "流动类型")
    private Short flowType;

    //活动编号
    @ExcelProperty(value = "活动编号")
    private String activityNumber;

    //流出地
    @ExcelProperty(value = "流出地")
    private String flowOutPlace;

    //流出时间
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "流出时间")
    private Date flowOutTime;

    //流出组织联系人
    @ExcelProperty(value = "流出组织联系人")
    private String flowOutContacts;

    //流出单位党组织
    @ExcelProperty(value = "流出单位党组织")
    private String flowOutOrganization;

    //流出组织联系电话
    @ExcelProperty(value = "流出组织联系电话")
    private String flowOutTelephone;

    //流入地
    @ExcelProperty(value = "流入地")
    private String flowInPlace;

    //流入组织联系人
    @ExcelProperty(value = "流入组织联系人")
    private String flowInContacts;

    //流入组织联系电话
    @ExcelProperty(value = "流入组织联系电话")
    private String flowInTelephone;

    //流入单位党组织
    @ExcelProperty(value = "流入单位党组织")
    private String flowInOrganization;

    //党员类型（0在职党员，1离（退）休干部、职工党员，2农名、学生、失业党员党费）
    @ExcelProperty(value = "党员类型",converter = MemberTypeConverter.class)
    private Short memberType;

    //党费缴纳到期时间
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "党费缴纳到期时间")
    private Date duesExpireTime;

    //每月党费
    @ExcelProperty(value = "每月党费")
    private BigDecimal soilflowDuesPerMonth;

    /**
     * 帐号状态（0正常 1停用）
     */
    @ExcelProperty(value = "帐号状态", converter = DefaultConverter.class)
    private String status;

}
